home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Night Owl 6
/
Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso
/
026a
/
atbbsdbf.zip
/
NEW.FRG
< prev
next >
Wrap
Text File
|
1990-12-14
|
4KB
|
212 lines
* Program............: D:\ATBBS\NEW.FRG
* Date...............: 12-14-90
* Versions...........: dBASE IV, Report 1.1
*
* Notes:
* ------
* Prior to running this procedure with the DO command
* it is necessary use LOCATE because the CONTINUE
* statement is in the main loop.
*
*-- Parameters
PARAMETERS gl_noeject, gl_plain, gl_summary, gc_heading, gc_extra
** The first three parameters are of type Logical.
** The fourth parameter is a string. The fifth is extra.
PRIVATE _peject, _wrap
*-- Test for no records found
IF EOF() .OR. .NOT. FOUND()
RETURN
ENDIF
*-- turn word wrap mode off
_wrap=.F.
IF _plength < (_pspacing * 7 + 1) + (_pspacing * 2 + 1) + 2
SET DEVICE TO SCREEN
DEFINE WINDOW gw_report FROM 7,17 TO 11,62 DOUBLE
ACTIVATE WINDOW gw_report
@ 0,1 SAY "Increase the page length for this report."
@ 2,1 SAY "Press any key ..."
x=INKEY(0)
DEACTIVATE WINDOW gw_report
RELEASE WINDOW gw_report
RETURN
ENDIF
_plineno=0 && set lines to zero
*-- NOEJECT parameter
IF gl_noeject
IF _peject="BEFORE"
_peject="NONE"
ENDIF
IF _peject="BOTH"
_peject="AFTER"
ENDIF
ENDIF
*-- Set-up environment
ON ESCAPE DO Prnabort
IF SET("TALK")="ON"
SET TALK OFF
gc_talk="ON"
ELSE
gc_talk="OFF"
ENDIF
gc_space=SET("SPACE")
SET SPACE OFF
gc_time=TIME() && system time for predefined field
gd_date=DATE() && system date " " " "
gl_fandl=.F. && first and last page flag
gl_prntflg=.T. && Continue printing flag
gl_widow=.T. && flag for checking widow bands
gn_length=LEN(gc_heading) && store length of the HEADING
gn_level=2 && current band being processed
gn_page=_pageno && grab current page number
gn_pspace=_pspacing && get current print spacing
*-- Set up procedure for page break
gn_atline=_plength - (_pspacing * 2 + 1)
ON PAGE AT LINE gn_atline EJECT PAGE
*-- Print Report
PRINTJOB
IF gl_plain
ON PAGE AT LINE gn_atline DO Pgplain
ELSE
ON PAGE AT LINE gn_atline DO Pgfoot
ENDIF
DO Pghead
gl_fandl=.T. && first physical page started
*-- File Loop
DO WHILE FOUND() .AND. .NOT. EOF() .AND. gl_prntflg
gn_level=0
*-- Detail lines
IF gl_summary
DO Upd_Vars
ELSE
DO __Detail
ENDIF
gl_widow=.T. && enable widow checking
CONTINUE
ENDDO
IF gl_prntflg
gl_fandl=.F. && last page finished
IF _plineno <= gn_atline
EJECT PAGE
ENDIF
ELSE
DO Reset
RETURN
ENDIF
ON PAGE
ENDPRINTJOB
DO Reset
RETURN
* EOP: D:\ATBBS\NEW.FRG
*-- Update summary fields and/or calculated fields.
PROCEDURE Upd_Vars
RETURN
* EOP: Upd_Vars
*-- Set flag to get out of DO WHILE loop when escape is pressed.
PROCEDURE Prnabort
gl_prntflg=.F.
RETURN
* EOP: Prnabort
PROCEDURE Pghead
?? IIF(gl_plain,'',gd_date) AT 0,;
"NEW FILES ON THE ATBBS" AT 29,;
gc_time FUNCTION "T" AT 72
?
?
?
?
*-- Print HEADING parameter ie. REPORT FORM <name> HEADING <expC>
IF .NOT. gl_plain .AND. gn_length > 0
?? gc_heading FUNCTION "I;V"+LTRIM(STR(_rmargin-_lmargin))
?
ENDIF
?? "LIBRARY" AT 0,;
"FILE NAME" AT 12,;
"BYTES" AT 28,;
"DESCRIPTION" AT 40
?
?? "--------" AT 0,;
"------------" AT 12,;
"--------" AT 28,;
"----------------------------------------" AT 40
?
?
RETURN
* EOP: Pghead
PROCEDURE __Detail
IF gn_pspace < gn_atline - (_pspacing * 7 + 1)
IF gl_widow .AND. _plineno+gn_pspace > gn_atline + 1
EJECT PAGE
ENDIF
ENDIF
DO Upd_Vars
?? Library FUNCTION "T" AT 0,;
File FUNCTION "T" AT 12,;
Bytes FUNCTION "T" AT 28,;
Descrip FUNCTION "T" AT 40
?
RETURN
* EOP: __Detail
PROCEDURE Pgfoot
PRIVATE _box, _pspacing
gl_widow=.F. && disable widow checking
_pspacing=1
?
IF .NOT. gl_plain
?
ENDIF
EJECT PAGE
*-- is the page number greater than the ending page
IF _pageno > _pepage
GOTO BOTTOM
SKIP
gn_level=0
ENDIF
IF .NOT. gl_plain .AND. gl_fandl
_pspacing=gn_pspace
DO Pghead
ENDIF
RETURN
* EOP: Pgfoot
*-- Process page break when PLAIN option is used.
PROCEDURE Pgplain
PRIVATE _box
EJECT PAGE
RETURN
* EOP: Pgplain
*-- Reset dBASE environment prior to calling report
PROCEDURE Reset
SET SPACE &gc_space.
SET TALK &gc_talk.
ON ESCAPE
ON PAGE
RETURN
* EOP: Reset